package com.mca.framework.completableFuture;

import java.util.Random;
import java.util.concurrent.*;

/**
 * @Author: zhoupeng
 * @createTime: 2025年07月11日 10:13:35
 * @version: 1.0
 * @Description:
 * @copyright:
 */
public class ThenAcceptDemo {
    public static void main(String[] args) {
        ExecutorService executorService = Executors.newFixedThreadPool(100);

        CompletableFuture<Void> future = CompletableFuture.supplyAsync(() -> {

            //子任务
            try {
                TimeUnit.SECONDS.sleep(3);
                System.out.println(Thread.currentThread().getName());
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            int f1 = new Random().nextInt(100);
            return f1;
        }, executorService).thenAcceptAsync(value->{
            //thenAcceptAsync 线程任务执行完了，并获取返回的结果 再进行后面业务处理，实际上 CompletableFuture 是没有 Void 返回的
            System.out.println("被连接的任务执行了，前置任务的结果为："+value);
            executorService.shutdown();
        },executorService);

        //主任务
        System.out.println("main end ");

        //获取子任务结果, 这个是获取不到的
        try {
            Void aVoid = future.get();
            System.out.println(aVoid);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }

    }
}
